iT邦幫忙

0

用 Python 暢玩 Line bot - 13:MongoDB 操作

  • 分享至 

  • xImage
  •  

連接資料庫與資料表

連接到對應的資料庫與資料表:

import pymongo

myclient = pymongo.MongoClient('mongodb+srv://<username>:<password>@cluster0.4ejzf.gcp.mongodb.net/test') # 要連結到的 connect string
mydb = myclient["資料庫名稱"] # 指定資料庫
mycol = mydb["資料表名稱"] # 指定資料表

新增

在已有的資料表建立一筆新的資料:

x = mycol.insert_one({"PlayerName": "Testname","PlayerId":1,"Status": 0,"Data": []})

print(x.inserted_id) # 輸出該新增資料的 id 編號

在已有的資料表建立多筆新的資料:

players_list = [
{"PlayerName": "Testname1","PlayerId":1,"Status": 0,"Data": []},
{"PlayerName": "Testname2","PlayerId":1,"Status": 0,"Data": []},
{"PlayerName": "Testname3","PlayerId":2,"Status": 0,"Data": []}
]

x = mycol.insert_many(players_list)

print(x.inserted_id) # 輸出所有新增資料的 id 編號

在已有的資料表建立多筆指定 id 的新的資料:

players_list = [
{ "_id": 1, "PlayerName": "Testname1","PlayerId":1,"Status": 0,"Data": []},
{ "_id": 2, "PlayerName": "Testname2","PlayerId":1,"Status": 0,"Data": []},
{ "_id": 3, "PlayerName": "Testname3","PlayerId":2,"Status": 0,"Data": []}
]

x = mycol.insert_many(players_list)

print(x.inserted_id) # 輸出所有新增資料的 id 編號

刪除

刪除符合條件的一筆資料:

mycol.delete_one({"PlayerId":event.source.user_id})

刪除符合條件的多筆資料:

del_players = { "PlayerName": {"$regex": "^F"} } #删除所有 PlayerName 欄位中以 F 開頭的資料
 
x = mycol.delete_many(del_players)
 
print(x.deleted_count, "筆資料刪除完畢")

當不給予 delete_many() 任何條件時,會刪除資料表內所有資料

x = mycol.delete_many({})
 
print(x.deleted_count, "筆資料刪除完畢")

查詢

當不給予 find_one() 條件,則輸出第一筆資料

x = mycol.find_one()
 
print(x)

搜尋所有的資料

for x in mycol.find():
  print(x)

搜尋所有資料的部分欄位,0為不顯示,1為顯示,除了 id 以外不可同時指定兩個欄位分別為0 與 1:

for x in mycol.find({},{ "_id": 0, "PlayerName": 1, "Status": 1 }):
  print(x)

搜尋符合指定條件的欄位

mydoc = mycol.find({ "PlayerName": "Testname1" })

只回傳指定數量的搜尋結果

myresult = mycol.find().limit(3)

for x in myresult:
  print(x)

修改

只修改符合條件的第一筆資料

myquery = { "Status": "0" }
newvalues = { "$set": { "Status": "1" } }
 
mycol.update_one(myquery, newvalues)

修改符合條件的所有資料

myquery = { "Status": "0" }
newvalues = { "$set": { "Status": "1" } }
 
mycol.update_many(myquery, newvalues)

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言